📥 Contact : robin9901@naver.com
© 2024 Jalnik. Security blog.
[JAVA 6] JAVA에서의 배열 1. 배열 배열의 개념
배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 이다, ( JAVA 기준 )
배열을 선언하고 생성하기
배열의 생성 예시
배열의 초기화
배열의 길이와 인덱스
배열의 길이 int[길이] 이기 때문에 해당 arr이란 이름을 가진 배열은 길이가 5임을 예측 할 수 있다.
배열의 인덱스(번호), 인덱스에 값 넣기 “배열의 첫 번째 칸에 1을 넣어줘” 와 같습니다. 배열의 인덱스는 0부터 세기 대문에 길이가 n인 배열에서 인덱스는 0~n-1입니다. 배열은 할당될 때 주소값이 부여되며 해당 크기 별로 주소값이 더해집니다.
배열 모두 출력하기 3.1) for문을 이용하여 모두 출력하기
3.2) Arrays.toString Method 사용하기
😁 그냥 배열을 출력하면 안되나요?
python 같은 언어는 print(배열) 를 하면 배열 자체를 출력한다 하지만 JAVA 같은 경우 배열 변수는 참조 변수기 때문에 형태@내부 주소로 출력 된다 하지만 예외적으로 char[] 배열의 경우에는 println을 사용하면 저렇게 출력해도 12345인 결과 값이 나온다.
배열의 복사 1) for문을 이용한 배열의 복사
💡
배열의 복사는 많은 리소스를 사용하기 떄문에 처음부터 배열의 길이를 길게 주는 것이 좋다.
이렇게 되면 arr1의 배열은 사용 불가 상태가 되어 가비지 컬렉터에 의해 없어진다(참조변수가 사라졌기 때문) 추가적으로 반복문 안에 배열을 넣어서 사용할 때는 배열의 index값을 정확히 파악해서 써야만 한다. 컴파일 시에는 문제가 발생하지 않지만 실행할 때 에러가 생길 수 있기 때문이다.
2) System.arraycopy() 를 이용한 배열의 복사
2. String 배열 String 배열의 생성
참조형 변수의 기본값은 null임으로 각 배열의 요소는 null로 초기화 된다.
String 배열의 초기화
한개씩 초기화 하기
선언시 바로 초기화하기
기본형 배열이 아닌 배열은 실제 객체가 아닌 객체의 주소가 저장되어 있다.
변수이름[0] 에는 실제로 주소값이 들어있다는 이야기 이다. String 배열은 Char배열에 기능을 추가한 것이다.
String 클래스의 주요 method
함수
인자
반환형태
설명
charAt(index)
int index
char
index에 있는 문자를 빼낸다
length()
none
int
배열의 길이를 출력한다
substring(start index, end index)
int, int
String
start index부터 end index까지의 문자열을 출력한다
equals(object ob)
Object
boolean
비교 대상과 문자열이 같은지 확인한다
toCharArray()
none
char[]
문자열 한개 단위로 잘라서 char배열로 반환한다
3. 다차원 배열(2차원만 다룸) 2차원 배열의 선언
2차원 배열의 초기화
결과물 ㅤ
arr[n][0]
arr[n][1]
arr[0]
1
2
arr[1]
3
4
arr[2]
5
6
2차원 배열에서의 모든 요소를 읽어오기
가변 배열(길이가 각자 다른 배열 생성)
결과 ㅤ
arr[n][0]
arr[n][1]
arr[n][2]
arr[n][3]
arr1[0]
null
null
null
null
arr1[1]
null
null
null
ㅤ
arr1[2]
null
null
ㅤ
ㅤ
arr1[3]
null
ㅤ
ㅤ
ㅤ
4. 객체 배열 1.타입[] = 변수이름;
변수 이름 = new 타입[길이];
ex) int[] = arr;
arr = new int[5];
2.타입[] 변수이름 = new 타입[길이];
ex) int[] arr = new int[5];
1. 선언 후 인덱스별로 초기화
int[] arr1 = new int[5];
arr1[0] = 1;
arr1[1] = 2;
.
.
arr1[4] = 5;
2. 선언할 때 초기화
int[] arr1 = new int[] {값}
int[] arr1 = {1,2,3,4,5} //new 타입[] 생략
3. 선언 후 초기화(선언 후 초기화는 new 타입[] 생략 불가)
int[] arr;
int[] arr = new int[] {1,2,3,4,5}
//배열의 인덱스
int[0] = 1
index 값
int[] arr = {1,2,3,4,5};
for(int i=0; i<arr.length; i++){
System.out.println(arr[i]);
}
int[] arr = {1,2,3,4,5};
System.out.println(Arrays.toString(arr));
//[1,2,3,4,5]출력
import java.util.*;
public class TestCode{
public static void main(String[] args){
char[] charr = {'a','b','c'};
int[] intarr = {1,2,3,4,5};
System.out.println("charr =" + charr);
System.out.println("intarr = " + intarr);
System.out.println(charr);
System.out.print(charr);
}
}
/*
charr =[C@3d012ddd
intarr = [I@626b2d4a
abc
abc
*/
//arr1 길이의 두배인 배열을 생성한다.
int[] arr2 = new int[arr1.length*2];
//arr1의 요소를 전부 복사한다
for(int i=0; i < arr1.length; i++){
arr2[i] = arr1[i]
}
//arr2참조 변수를 arr1로 변경
arr1 = arr2;
System.arraycopy(변경대상 배열의 참조변수, 변경 대상index, 변경 후 참조변수, index, 길이);
//예시
System.arraycopy(arr, 0, cp_arr, 0, arr.length);
String[] 변수이름 = new String[길이];
변수이름[0] = "hello";
변수이름[1] = "my";
.
.
.
String[] 변수이름 = new String[]{"hello","world","!"};
//new String[] 생략
String[] 변수이름 = {"hello","world","!"};
//char 배열을 String으로 변환
char[] arr1 = {'h', 'i'};
String arr2 = new String(arr1) //"hi"
//String을 char 배열로 변환
String s = "hi";
char[] arr3 = s.toCharArray(); //['h', 'i']
String num = "1234";
int num1 = Integer.parseInt(num);
//타입 [][] 변수이름 = 타입[행 길이][열 길이]
int[][] arr1 = int[5][4]
//타입 변수이름[][] = 타입[행길이][열 길이]
int arr[][] = int[5][4]
//타입[] 변수이름[] = 타입[]행길이][열 길이]
int[] arr1[] = int[5][4]
int[][] arr1 = {{1,2}, {3,4}, {5,6}}:
//case1
int[][] arr1 = {{1,2}, {3,4}, {5,6}}
for(int i = 0; i < arr1.length; i++){
for(int j = 0; j< arr1[i].length; j++{
System.out.println(arr1[i][j]);
}
}
//case2 간단한 for구문을 사용해서 읽어오
for(int[] i : arr1){
for(int j : i) {
System.out.println(j);
}
}
int[][] arr1 = new int[4][]; //행의 길이만 설정한다
arr1[0] = new int[4];
arr1[1] = new int[3];
arr1[2] = new int[2];
arr1[3] = new int[1];
package teach;
import java.util.*;
class Test{}
public class TestCode{
public static void main(String[] agrs) {
Test[] tarr = new Test[5];
tarr[0] = new Test();
tarr[1] = new Test();
.
.
tarr[4] = new Test();
}
}